Network managers (Português)]] O [https://wiki.gnome.org/Projects/NetworkManager/ NetworkManager] é um programa que provê a detecção e configuração automática de redes para computadores. As funcionalidades do NetworkManager são úteis para redes sem fio e cabeadas. Nas redes sem fio, o NetworkManager terá preferência pelas redes que já conhece, e possui a habilidade para trocar para a rede mais confiável sempre que disponível. Aplicativos preparados para o NetworkManager podem trocar do modo online para o offline. O NetworkManager tem preferência pelas redes cabeadas em detrimento das redes sem fio, e possui suporte a certos tipos de VPN. Foi originalmente desenvolvido pela Red Hat e agora, é hospedado no projeto [[GNOME (Português)|GNOME]]. {{Atenção|Por padrão, as senhas de Wi-Fi são armazenadas em texto simples, veja [[#Senhas de Wi-Fi criptografadas]].}} == Instalação == O NetworkManager pode ser [[instala]]do com o pacote {{Pkg|networkmanager}}, que contém um daemon, uma interface de linha de comando ({{ic|nmcli}}) e uma interface baseada em curses ({{ic|nmtui}}). === Habilitar NetworkManager === Após a instalação, você deve [[iniciar/habilitar]] {{ic|NetworkManager.service}}. Uma vez iniciado o daemon do NetworkManager, ele se conectará automaticamente a todas as "conexões do sistema" disponíveis que já foram configuradas. Quaisquer "conexões de usuário" ou conexões não configuradas precisarão de ''nmcli'' ou um miniaplicativo para configurar e conectar. === Interfaces adicionais === * {{Pkg|nm-connection-editor}} para uma interface gráfica de usuário, * {{Pkg|network-manager-applet}} para um miniaplicativo de bandeja de sistema ({{ic|nm-applet}}). {{Nota|Você deve garantir que nenhum outro serviço que deseje configurar a rede esteja em execução; na verdade, vários serviços de rede entrarão em conflito. Você pode encontrar uma lista dos serviços em execução no momento com {{ic|1=systemctl --type=service}} e, em seguida, [[parar]]. Veja [[#Configuração]] para ativar o serviço NetworkManager.}} === Suporte a banda larga móvel === [[Instale]] os pacotes {{Pkg|modemmanager}}, {{Pkg|mobile-broadband-provider-info}} e {{Pkg|usb_modeswitch}} para um suporte a conexão de banda larga móvel. Veja [[USB 3G Modem#NetworkManager]] para detalhes. === Suporte a PPPoE / DSL === [[Instale]] o pacote {{Pkg|rp-pppoe}} para suporte a conexão PPPoE/DSL. Para realmente adicionar uma conexão PPPoE, use {{ic|1=nm-connection-editor}} e adicione uma nova conexão DSL/PPPoE. === Suporte a VPN === O NetworkManager desde a versão 1.16 tem suporte nativo ao [[WireGuard]], precisando apenas de seu módulo de kernel {{ic|wireguard}}. Leia o [https://blogs.gnome.org/thaller/2019/03/15/wireguard-in-networkmanager/ WireGuard na publicação de blog do NetworkManager]. O suporte para outros tipos de VPN é baseado em um sistema de plug-in. Eles são fornecidos nos seguintes pacotes: * {{Pkg|networkmanager-openconnect}} para [[OpenConnect (Português)|OpenConnect]] * [[networkmanager-openvpn]] para [[OpenVPN]] * {{Pkg|networkmanager-pptp}} para [[PPTP Client]] * {{Pkg|networkmanager-strongswan}} para [[strongSwan]] * {{Pkg|networkmanager-vpnc}} * {{AUR|networkmanager-fortisslvpn-git}}{{Broken package link (Português)|package not found}} * {{AUR|networkmanager-iodine-git}} * {{AUR|networkmanager-libreswan}} * {{Pkg|networkmanager-l2tp}} * {{AUR|networkmanager-ssh-git}} * {{Pkg|network-manager-sstp}} {{Atenção|1=Há vários [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues?search=VPN&state=opened bugs] (e [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues?search=VPN&state=opened bugs antigos]) relacionados a suporte VPN. Verifique as opções de processos daemon definidos via a GUI corretamente e certifique-se em cada lançamento do pacote.}} {{Nota|Pra ter uma resolução de DNS totalmente funcional ao usar VPN, você deve configurar [[#Cache de DNS e encaminhamento condicional|encaminhamento condicional]].}} == Uso == NetworkManager vem com {{man|1|nmcli}} e {{man|1|nmtui}}. === Exemplos de nmcli === Lista redes wifi próximas: $ nmcli device wifi list Conecta a uma rede wifi: $ nmcli device wifi connect ''SSID'' password ''senha'' Conecta a uma rede oculta: $ nmcli device wifi connect ''SSID'' password ''senha'' hidden yes Conecta a um wifi na interface de rede {{ic|wlan1}}: $ nmcli device wifi connect ''SSID'' password ''senha'' ifname wlan1 ''nome_perfil'' Desconecta uma interface: $ nmcli device disconnect ifname eth0 Reconecta uma interface marcada como desconectada: $ nmcli connection up uuid ''UUID'' Obtém uma lista de UUIDs: $ nmcli connection show Vê uma lista de dispositivos de rede e seus estados: $ nmcli device Desliga o wifi: $ nmcli radio wifi off === Editar uma conexão === Para uma lista compreensiva de configurações, veja {{man|5|nm-settings}}. Em primeiro lugar você precisa obter lista de conexões: {{hc|$ nmcli connection| NAME UUID TYPE DEVICE Conexão cabeada 2 e7054040-a421-3bef-965d-bb7d60b7cecf ethernet enp5s0 Conexão cabeada 1 997f2782-f0fc-301d-bfba-15421a2735d8 ethernet enp0s25 MEU-WIFI-DE-CASA 92a0f7b3-2eba-49ab-a899-24d83978f308 wifi -- }} Aqui você pode usar a primeira coluna como ID de conexão usada posteriormente. Neste exemplo, escolhemos {{ic|Conexão cabeada 2}} como um ID de conexão. Você pode ter três métodos para configurar uma conexão após {{ic|Conexão cabeada 2}} ter sido criada: ; Editor interativo do nmcli : {{ic|nmcli connection edit ''Conexão cabeada 2''}}.
O uso está bem documentado no editor. ; Interface de linha de comando do nmcli : {{ic|nmcli connection modify ''Conexão cabeada 2'' ''definição''.''propriedade'' ''valor''}}. Veja {{man|1|nmcli}} para seu uso. Por exemplo, você pode alterar sua métrica de rota IPv4 para 200 usando o comando {{ic|nmcli connection modify 'Conexão cabeada 2' ipv4.route-metric 200}}. ; Arquivo de conexão : Em {{ic|/etc/NetworkManager/system-connections/}}, modifique o arquivo {{ic|''Conexão cabeada 2''.nmconnection}} correspondente.
Não se esqueça de recarregar o arquivo de configuração com {{ic|nmcli connection reload}} == Front-ends == Para configurar e ter acesso fácil ao NetworkManager, a maioria dos usuários desejará instalar um applet. Esse front-end da GUI geralmente reside na bandeja do sistema (ou na área de notificação) e permite a seleção de rede e a configuração do NetworkManager. Vários ambientes de área de trabalho possuem seu próprio applet. Caso contrário, você pode usar [[#nm-applet]]. === GNOME === O [[GNOME (Português)|GNOME]] tem uma ferramenta embutida, acessível a partir das configurações de Rede. === KDE Plasma === [[Instale]] o pacote {{Pkg|plasma-nm}}. Em seguida, adicione-o à barra de tarefas do KDE por meio do menu ''Opções de painel > Adicionar widgets > Redes''. === nm-applet === {{Pkg|network-manager-applet}} é um front-end em GTK 3 que funciona sob ambientes Xorg com uma bandeja de sistema. Para armazenar conexões secretas, instale e configure [[GNOME/Keyring]]. Esteja ciente de que depois de ativar a opção caixa de seleção {{ic|Disponibilizar para outros usuários}} para uma conexão, o NetworkManager armazena a senha em texto simples, embora o respectivo arquivo seja acessível apenas para root (ou outros usuários via {{ic|nm-applet}}). Veja [[#Senhas de Wi-Fi criptografadas]]. Para executar {{ic|nm-applet}} sem uma bandeja do sistema, você pode usar {{Pkg|trayer}} ou {{Pkg|stalonetray}}. Por exemplo, você pode adicionar um script como este em seu caminho: {{hc|nmgui| #!/bin/sh nm-applet 2>&1 > /dev/null & stalonetray 2>&1 > /dev/null killall nm-applet }} Quando você fecha a janela ''stalonetray'', ela fecha {{ic|nm-applet}} também, então nenhuma memória extra é usada quando você terminar as configurações de rede. O applet pode mostrar notificações de eventos, como conexão ou desconexão de uma rede WiFi. Para que essas notificações sejam exibidas, verifique se você tem um servidor de notificação instalado - consulte [[Desktop notifications|Notificações na área de trabalho]]. Se você usar o applet sem um servidor de notificação, poderá ver algumas mensagens em stdout/stderr e o aplicativo poderá ser interrompido. Veja [https://bugzilla.gnome.org/show_bug.cgi?id=788313]. Para executar {{ic|nm-applet}} com tais notificações desabilitadas, inicie o miniaplicativo com o seguinte comando: $ nm-applet --no-agent {{Dica|{{ic|nm-applet}} pode ser iniciado automaticamente com um [[XDG Autostart (Português)|arquivo desktop de inicialização automática]], para adicionar a opção --no-agent, modifique a linha Exec, p.ex., {{bc|1=Exec=nm-applet --no-agent}} }} {{Atenção|No [[i3 (Português)|i3]], se o nm-applet for iniciado com a opção {{ic|--no-agent}}, não será possível conectar-se a uma nova rede WiFi criptografada clicando na lista de itens porque nenhuma janela de diálogo de entrada de senha será exibida. [[journal (Português)|journal]] mostrará {{ic|no secrets: No agents were available for this request}}.}} ==== Appindicator ==== Desde a versão 1.18.0, o suporte do Appindicator está [https://gitlab.archlinux.org/archlinux/packaging/packages/network-manager-applet/-/commit/527448fb2a87d85055f504f463dfe961dccd75c3 disponível] no pacote oficial {{Pkg|network-manager-applet}}. Para usar o nm-applet em um ambiente Appindicator, inicie o miniaplicativo com o seguinte comando: $ nm-applet --indicator === networkmanager-dmenu === Como alternativa, existe o {{AUR|networkmanager-dmenu-git}}, que é um pequeno script para gerenciar as conexões do NetworkManager com o [[dmenu]] ou [[rofi]] em vez do {{ic|nm-applet}}. Ele fornece todos os recursos essenciais, como conexão com conexões Wi-Fi ou com fio existentes do NetworkManager, conexão a novas conexões Wi-Fi, solicitações de senha, se necessário, conexão VPN existente, habilitação/desabilitação de rede e inicialização da interface gráfica ''nm-connection-editor'', conexão a redes Bluetooth. == Configuração == O NetworkManager exigirá algumas etapas adicionais para poder funcionar corretamente. Certifique-se de ter configurado {{ic|/etc/hosts}} como descrito na seção [[Configuração de rede#Configurando um hostname]]. O NetworkManager possui um arquivo de configuração global em {{ic|/etc/NetworkManager/NetworkManager.conf}}. Arquivos de configuração adicionais podem ser colocados em {{ic|/etc/NetworkManager/conf.d/}}. Geralmente, nenhuma configuração precisa ser feita para os padrões globais. Após editar um arquivo de configuração, as alterações podem ser aplicadas executando: # nmcli general reload === Habilitar NetworkManager Wait Online === Se você tiver serviços que falham se eles forem iniciados antes que a rede esteja ativa, você pode usar o {{ic|NetworkManager-wait-online.service}} além do {{ic|NetworkManager.service}}. Isso, no entanto, raramente é necessário porque a maioria dos daemons em rede é inicializada corretamente, mesmo que a rede ainda não tenha sido configurada. Em alguns casos, o serviço ainda falhará ao iniciar com sucesso na inicialização devido à configuração de tempo limite em {{ic|/usr/lib/systemd/system/NetworkManager-wait-online.service}} ser muito curta. Altere o tempo limite padrão de 30 para um valor mais alto. === Configurar as permissões de PolicyKit === Veja [[Solução de problemas gerais#Permissões de sessão]] para como configurar uma sessão de trabalho. Com uma sessão de trabalho, você tem várias opções para conceder os privilégios necessários ao NetworkManager: * ''Opção 1.'' Execute um agente de autenticação [[Polkit]] ao efetuar login, como {{ic|/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1}} (parte do {{Pkg|polkit-gnome}}). Você será solicitado a fornecer sua senha sempre que adicionar ou remover uma conexão de rede. * ''Opção 2.'' [[Usuários e grupos#Gerenciamento de grupo|Adicione]] a si próprio ao grupo {{ic|wheel}}. Você não precisará inserir sua senha, mas a sua conta de usuário também poderá receber outras permissões, como a capacidade de usar o [[sudo (Português)|sudo]] sem digitar a senha do root. * ''Opção 3.'' [[Usuários e grupos#Gerenciamento de grupo|Adicione]] a si próprio ao grupo {{ic|network}} e crie o seguinte arquivo: {{hc|/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules| polkit.addRule(function(action, subject) { if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) { return polkit.Result.YES; } }); }} : Todos os usuários do grupo {{ic|network}} poderão adicionar e remover redes sem uma senha. Isso não funcionará em [[systemd (Português)|systemd]] se você não tiver uma sessão ativa com ''systemd-logind''. === Configurações de proxy === O NetworkManager não lida diretamente com configurações de proxy, mas se você estiver usando o [[GNOME (Português)|GNOME]] ou [[KDE (Português)|KDE]], você pode usar o [http://marin.jb.free.fr/proxydriver/ proxydriver] que lida com configurações de proxy usando Informações do NetworkManager. O proxydriver é encontrado no pacote {{AUR|proxydriver}}. Para que o ''proxydriver'' possa alterar as configurações do proxy, você precisaria executar este comando, como parte do processo de inicialização do GNOME (veja [[GNOME (Português)#Inicialização automática]]): xhost +si:localuser:''nome_de_usuário'' Veja também as [[Proxy settings|configurações de proxy]]. === Verificando conectividade === NetworkManager pode tentar alcançar uma página na Internet ao conectar a uma rede. {{Pkg|networkmanager}} está configurado por padrão em {{ic|/usr/lib/NetworkManager/conf.d/20-connectivity.conf}} para verificar a conectividade com o archlinux.org. Para usar um servidor web diferente ou desabilitar a verificação de conectividade, crie {{ic|/etc/NetworkManager/conf.d/20-connectivity.conf}}, veja {{man|5|NetworkManager.conf|CONNECTIVITY SECTION}}. Segue abaixo um exemplo de uso de servidores do GNOME (não requer o uso de [[GNOME]] em si): {{hc|/etc/NetworkManager/conf.d/20-connectivity.conf| [connectivity] uri=http://nmcheck.gnome.org/check_network_status.txt }} {{Nota|Embora as verificações automáticas de conectividade sejam um vazamento de privacidade em potencial, o URL oficial de conectividade padrão do archlinux.org está comprometido em não registrar nenhum acesso. Veja [https://gitlab.archlinux.org/archlinux/infrastructure/-/commit/68fbaca2ef9f31f624f117899848f4288d6b39d1].}} === Portais cativos === Para aqueles que estão por trás de um [[Wikipedia:Captive portal|portal cativo]] ''(captive portal)'', o gerenciador de desktop pode abrir automaticamente uma janela solicitando credenciais. Se sua área de trabalho não funcionar, você pode usar o pacote {{Pkg|capnet-assist}} (no entanto, atualmente ele possui um script de ''dispatcher'' quebrado do NetworkManager). Como alternativa, você pode criar um script de expedidor do NetworkManager com o seguinte conteúdo: {{hc|/etc/NetworkManager/dispatcher.d/90-open_captive_portal| #!/bin/sh -e # Script to dispatch NetworkManager events # # Runs shows a login webpage on walled garden networks. # See NetworkManager(8) for further documentation of the dispatcher events. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin if [ -x "/usr/bin/logger" ]; then logger="/usr/bin/logger -s -t captive-portal" else logger=":" fi wait_for_process() { PNAME=$1 while [ -z "$(/usr/bin/pgrep $PNAME)" ]; do sleep 3; done } #launch the browser, but on boot we need to wait that nm-applet starts start_browser() { local user="$1" local display="$2" export DISPLAY="$display" wait_for_process nm-applet export XAUTHORITY="/home/$user/.Xauthority" $logger "Running browser as '$user' with display '$display' to login in captive portal" sudo -u "$user" --preserve-env=DISPLAY,XAUTHORITY -H xdg-open http://capnet.elementary.io 2>&1 > /dev/null } # Run the right scripts case "$2" in connectivity-change) $logger -p user.debug "dispatcher script triggered on connectivity change: $CONNECTIVITY_STATE" if [ "$CONNECTIVITY_STATE" = "PORTAL" ]; then # Match last column of who's output with ' :[at least one digit] ' who | awk '$NF ~ /\(:[0-9]+\)/ { print $1 " " substr($NF, 2, length($NF)-2) };' | \ while read user display; do start_browser $user $display || $logger -p user.err "Failed for user: '$user' display: '$display'" done fi ;; *) # In a down phase exit 0 ;; esac }} Você precisará [[reiniciar]] {{ic|NetworkManager.service}} ou reiniciar para que isso comece a funcionar. Depois disso, o script do expedidor deve abrir uma janela de login assim que detectar que você está atrás de um portal cativo. Outra solução é o {{AUR|captive-browser-git}}, baseado no Google Chrome. === Cliente DHCP === Por padrão, o NetworkManager usa seu cliente DHCP interno. O plugin DHCPv4 interno baseado na biblioteca [https://github.com/nettools/n-dhcp4 n-dhcp4 do nettools], enquanto o plugin DHCPv6 interno é feito de código baseado systemd-networkd. Para usar o cliente DHCP da ISC, [[instale]] {{Pkg|dhclient}}. Para alterar o backend do cliente DHCP, defina a opção {{ic|1=main.dhcp=''nome_cliente_dhcp''}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}. Por exemplo: {{hc|1=/etc/NetworkManager/conf.d/dhcp-client.conf|2= [main] dhcp=dhclient }} {{Nota| * Não ative as units systemd enviadas com os pacotes {{Pkg|dhclient}} e {{Pkg|dhcpcd}}. Eles entrarão em conflito com o NetworkManager; consulte a nota em [[#Instalação]] para mais detalhes. * O NetworkManger não suporta dhcpcd = 9.0.0. Veja {{Bug|66231}}. }} === Gerenciamento de DNS === O gerenciamento de DNS do NetworkManager é descrito na página wiki do projeto GNOME — [https://wiki.gnome.org/Projects/NetworkManager/DNS Projects/NetworkManager/DNS]. ==== Cache de DNS e encaminhamento condicional ==== O NetworkManager possui um plugin para habilitar o cache DNS e encaminhamento condicional ([https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/143 anteriormente] chamado "DNS dividido" na documentação do NetworkManager) usando [[dnsmasq (Português)|dnsmasq]] ou [[systemd-resolved]]. As vantagens dessa configuração são que as pesquisas de DNS serão armazenadas em cache, encurtando os tempos de resolução e as pesquisas de DNS dos hosts de VPN serão roteadas para os servidores DNS da VPN relevantes. Isso é especialmente útil se você estiver conectado a mais de uma VPN. ===== dnsmasq ===== Certifique-se que {{Pkg|dnsmasq}} está instalado. Então, defina {{ic|1=main.dns=dnsmasq}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}: {{hc|/etc/NetworkManager/conf.d/dns.conf|2= [main] dns=dnsmasq }} Agora, execute {{ic|nmcli general reload}} como root. NetworkManager vai iniciar automaticamente o dnsmasq e adicionar {{ic|127.0.0.1}} ao {{ic|/etc/resolv.conf}}. Os servidores DNS originais podem ser localizados no {{ic|/run/NetworkManager/no-stub-resolv.conf}}. Você pode verificar se dnsmasq está sendo usado fazendo a mesma procura DNS duas vezes com {{ic|drill example.com}} e verificando o servidor e tempos de consulta. {{Nota| * Você não precisa iniciar {{ic|dnsmasq.service}} ou editar {{ic|/etc/dnsmasq.conf}}. O NetworkManager iniciará o dnsmasq sem usar o serviço systemd e sem ler o(s) arquivo(s) de configuração padrão do dnsmasq. * A instância do dnsmasq iniciada pelo NetworkManager será vinculada a {{ic|127.0.0.1:53}}, você pode executar qualquer software (incluindo {{ic|dnsmasq.service}}) no mesmo endereço e porta. }} ====== Configuração personalizada do dnsmasq ====== Configurações personalizadas podem ser criadas para o ''dnsmasq'' criando arquivos de configuração em {{ic|/etc/NetworkManager/dnsmasq.d/}}. Por exemplo, para alterar o tamanho do cache DNS (armazenado na RAM): {{hc|/etc/NetworkManager/dnsmasq.d/cache.conf|2= cache-size=1000 }} {{Dica|Verifique a sintaxe do arquivo de configuração com {{ic|1=dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d}}.}} Veja {{man|8|dnsmasq}} para todas as opções disponíveis. ====== IPv6 ====== Habilitar o {{ic|dnsmasq}} no NetworkManager pode interromper as pesquisas de DNS somente do IPv6 (ou seja, {{ic|drill -6 [hostname}}}) que, de outra forma, funcionariam. Para resolver isso, a criação do arquivo a seguir configurará o ''dnsmasq'' para também ouvir o loopback do IPv6: {{hc|/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf|2= listen-address=::1 }} Além disso, o {{ic|dnsmasq}} também não prioriza o DNS IPv6 upstream. Infelizmente, o NetworkManager não faz isso ([https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/936712 Bug do Ubuntu]). Uma solução alternativa seria desabilitar o DNS IPv4 na configuração do NetworkManager, supondo que exista. ====== DNSSEC ====== A instância dnsmasq iniciada pelo NetworkManager por padrão não validará [[DNSSEC (Português)|DNSSEC]] desde que seja iniciada com a opção {{ic|--proxy-dnssec}}. Ele irá confiar em qualquer informação DNSSEC obtida do servidor DNS upstream. Para que o dnsmasq valide corretamente o DNSSEC, quebrando assim a resolução de DNS com servidores de nomes que não suportam ele, crie o seguinte arquivo de configuração: {{hc|/etc/NetworkManager/dnsmasq.d/dnssec.conf|2= conf-file=/usr/share/dnsmasq/trust-anchors.conf dnssec }} ===== systemd-resolved ===== O NetworkManager pode usar o [[systemd-resolved]] como um resolvedor e cache de DNS. Certifique-se de que ''systemd-resolved'' esteja configurado corretamente e que {{ic|systemd-resolved.service}} esteja [[iniciado]] antes de usá-lo. systemd-resolved vai ser usado automaticamente se {{ic|/etc/resolv.conf}} é um [[Systemd-resolved#DNS|link simbólico]] para {{ic|/run/systemd/resolve/stub-resolv.conf}}, {{ic|/run/systemd/resolve/resolv.conf}} ou {{ic|/usr/lib/systemd/resolv.conf}}. Você pode habilitá-lo explicitamente definindo {{ic|1=main.dns=systemd-resolved}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}: {{hc|/etc/NetworkManager/conf.d/dns.conf|2= [main] dns=systemd-resolved }} ===== Resolvedor de DNS com um assinante do openresolv ===== Se o [[openresolv (Português)|openresolv]] tem um assinante para seu [[resolvedor de DNS]] local, configure o assinante e [[#Usar openresolv|configure o NetworkManager para usar o openresolv]]. Porque o NetworkManager anuncia uma única "interface" para o ''resolvconf'', não é possível implementar encaminhamento condicional entre duas conexões do NetworkManager. Veja [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 issue 153 do NetworkManager]. Isso pode ser parcialmente mitigado se você definir {{ic|1=private="*"}} no {{ic|/etc/resolvconf.conf}}[https://roy.marples.name/projects/openresolv/configuration/]. Quaisquer consultas por domínios que não estejam na lista de domínios de pesquisa não serão encaminhados. Elas serão tratadas conforme a configuração do resolvedor local. Por exemplo, encaminhadas para outro servidor DNS ou resolvidas recursivamente a partir da raiz do DNS. ==== Servidores DNS personalizados ==== ===== Configurando servidores DNS globais personalizados ===== Para definir servidores DNS para todas as conexões, especifique-as em {{man|5|NetworkManager.conf}} usando a sintaxe {{ic|1=servers=''endereçoservidorip1'',''endereçoservidorip2'',''endereçoservidorip3''}} em uma seção chamada {{ic|[global-dns-domain-*]}}. Por exemplo: {{hc|/etc/NetworkManager/conf.d/dns-servers.conf|2= [global-dns-domain-*] servers=::1,127.0.0.1 }} {{Nota| * Se você usa [[#Cache de DNS e encaminhamento condicional|plugin de dnsmasq ou systemd-resolved do NetworkManager]] ou [[#Resolvedor de DNS com um assinante do openresolv|assinantes de openresolv]], então não especifique endereços de loopback com a opção {{ic|1=servers=}}, pois isso pode quebrar a resolução de DNS. * Os servidores especificados não são enviados para [[systemd-resolved]], os servidores DNS da conexão são usados. }} ===== Configurando servidores DNS personalizados em uma conexão ===== ====== Configurando servidores DNS personalizados em uma conexão (GUI) ====== A configuração vai depender do tipo de front-end usado; o processo geralmente envolve clicar com botão direito no miniaplicativo, editar (ou criar) um perfil e, então, escolher o tipo de DHCP como ''Automático (especifique endereços)''. OS endereços DNS precisarão ser inseridos e são geralmente dessa formato: {{ic|127.0.0.1, ''Servidor-DNS-um'', ...}}. ====== Configurando servidores DNS personalizados em uma conexão (nmcli / arquivo de conexão) ====== Para configurar servidores DNS por conexão, você pode usar o campo {{ic|dns}} (e os {{ic|dns-search}} e {{ic|dns-options}} associados) nas [[#Editar uma conexão|configurações da conexão]]. Se {{ic|method}} estiver definido para {{ic|auto}} (quando você usa DHCP), você precisa definir {{ic|ignore-auto-dns}} para {{ic|yes}}. ==== /etc/resolv.conf ==== Por padrão, {{ic|/etc/resolv.conf}} é gerenciado pelo ''NetworkManager'' a menos que ele seja um link simbólico. Ele pode ser configurado para escrever por meio do [[#Usar openresolv|openresolv]] ou para [[#/etc/resolv.conf não gerenciado|não tocar]]. O uso do openresolv permite que o NetworkManager coexista com outro software com suporte a ''resolvconf'' ou, por exemplo, para executar um cache DNS local e um resolvedor de DNS dividido para o qual o openresolv tem um [[openresolv (Português)#Assinantes|assinante]]. {{Nota|Encaminhamento condicional [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 ainda não possui suporte completo] ao usar NetworkManager com openresolv.}} O ''NetworkManager'' também oferece hooks via os scripts dispatchers que podem ser usados para alterar o {{ic|/etc/resolv.conf}} após as alterações de rede. Veja [[#Serviços de rede com o NetworkManager dispatcher]] e {{man|8|NetworkManager}} para mais informações. {{Nota| * Se o NetworkManager estiver configurado para usar [[#dnsmasq|dnsmasq]] ou [[#systemd-resolved|systemd-resolved]], os endereços loopback apropriados serão escritos em {{ic|/etc/resolv.conf}}. * O arquivo {{ic|resolv.conf}} que o NetworkManager escreve, ou que escreveria em {{ic|/etc/resolv.conf}}, pode ser encontrado em {{ic|/run/NetworkManager/resolv.conf}}. * Um arquivo {{ic|resolv.conf}} com os servidores de nome obtidos e domínios de pesquisa podem ser encontrados em {{ic|/run/NetworkManager/no-stub-resolv.conf}}. }} ===== /etc/resolv.conf não gerenciado ===== Para evitar que o NetworkManager toque no {{ic|/etc/resolv.conf}}, defina {{ic|1=main.dns=none}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}: {{hc|/etc/NetworkManager/conf.d/dns.conf|2= [main] dns=none }} {{Dica|Você também pode querer definir {{ic|1=main.systemd-resolved=false}}, de forma que o NetworkManager não envie a configuração DNS para [[systemd-resolved]].}} {{Nota|Veja [[#Cache de DNS e encaminhamento condicional]], para configurar o NetworkManager usando outros backends de DNS, como [[dnsmasq (Português)|dnsmasq]] e [[systemd-resolved]], em vez de usar {{ic|1=main.dns=none}}.}} Após isso, o {{ic|/etc/resolv.conf}} pode ser um link simbólico quebrado que você precisará remover. Então, basta criar um novo arquivo {{ic|/etc/resolv.conf}}. ===== Usar openresolv ===== {{Nota|Não defina {{ic|1=rc-manager=resolvconf}} quando {{Pkg|systemd-resolvconf}} estiver instalado. ''systemd-resolved'' fornece suporte limitado à interface do ''resolvconf'' e o NetworkManager possui suporte a se comunicar com systemd-resolved por meio de D-Bus sem usar ''resolvconf''.}} Para configurar o NetworkManager para usar [[openresolv (Português)|openresolv]], defina {{ic|1=main.rc-manager=resolvconf}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}: {{hc|/etc/NetworkManager/conf.d/rc-manager.conf|2= [main] rc-manager=resolvconf }} === Firewall === Você pode atribuir uma zona [[firewalld]] com base na sua conexão atual. Por exemplo, um firewall restritivo no trabalho e um menos restritivo no domicílio. Isso também pode ser feito com o [[#Serviços de rede com o NetworkManager dispatcher|NetworkManager dispatcher]]. === Configuração de 802.1x / PEAP === Uma rede PEAP e 802.1x pode ser adicionada adicionando um arquivo de configuração ao {{ic|/etc/NetworkManager/system-connections/''nome''}}. Aqui está um exemplo de arquivo de configuração para IPv4 com IPv6 desativado: {{hc|/etc/NetworkManager/system-connections/''nome''|2= [ipv6] method=ignore [ipv4] method=auto [connection] #id=XXXXXXXXX #uuid=XXXXXXXXX type=802-11-wireless #timestamp=XXXX [802-11-wireless-security] key-mgmt=wpa-eap [802-11-wireless] ssid=ssid mode=infrastructure #seen-bssids=XXXXXXXXX security=802-11-wireless-security [802-1x] eap=peap; identity=user password=password phase2-auth=mschapv2 }} A cerquilha (#) define comentários. == Serviços de rede com o NetworkManager dispatcher == Existem alguns serviços de rede que você não desejará executar até que o NetworkManager exiba uma interface. O NetworkManager tem a capacidade de iniciar serviços quando você se conecta a uma rede e os interrompe quando você desconecta (por exemplo, ao usar [[NFS]], [[SMB]] e [[NTPd]]). Para ativar o recurso, você precisa [[habilitar]] e [[inicia]]r o {{ic|NetworkManager-dispatcher.service}}. Quando o serviço estiver ativo, os scripts poderão ser adicionados ao diretório {{ic|/etc/NetworkManager/dispatcher.d}}. Os scripts devem pertencer ao '''root''', caso contrário o distribuidor não os executará. Para maior segurança, defina o [[proprietário]] e grupo para root: # chown root:root /etc/NetworkManager/dispatcher.d/''10-script.sh'' Certifique-se que o arquivo tem as permissões corretas: # chmod 755 /etc/NetworkManager/dispatcher.d/''10-script.sh'' Os scripts serão executados em ordem alfabética no momento da conexão e em ordem alfabética inversa no momento da desconexão. Para garantir a ordem em que aparecem, é comum usar caracteres numéricos antes do nome do script (por exemplo, {{ic|10-portmap}} ou {{ic|30-netfs}} (o que garante que ''portmapper'' esteja ativo antes que as montagens do NFS sejam tentadas). Scripts vão receber os seguintes argumentos: * '''Nome da interface:''' p. ex., {{ic|eth0}} * '''Status da interface:''' ''up'' ou ''down'' * '''Status da VPN:''' ''vpn-up'' ou ''vpn-down'' {{Atenção|Se você se conectar a redes estrangeiras ou públicas, esteja ciente de quais serviços você está iniciando e quais servidores você espera que estejam disponíveis para eles se conectarem. Você pode criar uma falha de segurança iniciando os serviços errados enquanto estiver conectado a uma rede pública.}} === Evitando o esgotamento de tempo limite do dispatcher === Se o acima está funcionando, então esta seção não é relevante. No entanto, há um problema geral relacionado à execução de scripts do dispatcher que demoram mais para serem executados. Inicialmente, foi utilizado um tempo limite interno de apenas três segundos. Se o script chamado não foi concluído a tempo, ele foi morto. Mais tarde, o tempo limite foi estendido para cerca de 20 segundos (veja o [https://bugzilla.redhat.com/show_bug.cgi?id=982734 Rastreador de erros] para mais informações). Se o tempo limite ainda criar o problema, uma solução alternativa poderá ser modificar o arquivo de serviço do distribuidor {{ic|/usr/lib/systemd/system/NetworkManager-dispatcher.service}} para permanecer ativo após a saída: {{hc|/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf|2= [Service] RemainAfterExit=yes }} Agora, inicie e habilite o serviço modificado {{ic|NetworkManager-dispatcher}} service. {{Atenção|Adicionar a linha {{ic|RemainAfterExit}} a ele impedirá que o dispatcher feche. Infelizmente, o dispatcher '''tem''' para fechar antes que possa executar seus scripts novamente. Com ele, o dispatcher não irá expirar, mas também não será fechado, o que significa que os scripts só serão executados uma vez por inicialização. Portanto, não adicione a linha a menos que o tempo limite esteja causando um problema.}} === Exemplos de dispatcher === ==== Montar pasta remota com sshfs ==== Como o script é executado em um ambiente muito restritivo, você precisa exportar {{ic|SSH_AUTH_SOCK}} para se conectar ao seu agente SSH. Existem diferentes maneiras de conseguir isso, veja [https://bbs.archlinux.org/viewtopic.php?pid=1042030#p1042030 esta mensagem] para obter mais informações. O exemplo abaixo funciona com [[GNOME Keyring]], e irá pedir a senha se você ainda não estiver desbloqueado. Caso o NetworkManager conecte-se automaticamente no login, é provável que o ''gnome-keyring'' ainda não tenha iniciado e a exportação irá falhar (daí o sleep). O {{ic|UUID}} para correspondência pode ser encontrado com o comando {{ic|nmcli connection status}} ou {{ic|nmcli connection list}}. {{bc| #!/bin/sh USER='nome_de_usuário' REMOTE='usuário@host:/caminho/remoto' LOCAL='/caminho/local' interface=$1 status=$2 if [ "$CONNECTION_UUID" = "''uuid''" ]; then case $status in up) SSH_AUTH_SOCK=$(find /tmp -maxdepth 1 -type s -user "$USER" -name 'ssh') export SSH_AUTH_SOCK su "$USER" -c "sshfs $REMOTE $LOCAL" ;; down) fusermount -u "$LOCAL" ;; esac fi }} ==== Montagem de compartilhamentos SMB ==== Alguns compartilhamentos [[SMB]] estão disponíveis apenas em determinadas redes ou locais (por exemplo, em casa). Você pode usar o distribuidor para montar apenas compartilhamentos SMB que estejam presentes em seu local atual. O script a seguir verificará se nos conectamos a uma rede específica e montamos os compartilhamentos de acordo: {{hc|/etc/NetworkManager/dispatcher.d/30-mount-smb.sh| #!/bin/sh # Localiza o UUID de conexão com "nmcli connection show" no terminal. # Todos os tipos de conexão do NetworkManager têm suporte: sem fio, VPN, com fio... if [ "$2" = "up" ]; then if [ "$CONNECTION_UUID" = "uuid" ]; then mount /seu/ponto/de/montagem & # adicione mais compartilhamentos conforme necessário fi fi }} O script a seguir desmontará todos os compartilhamentos SMB antes de um software ter iniciado a desconexão de uma rede específica: {{hc|/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh| #!/bin/sh if [ "$CONNECTION_UUID" = "uuid" ]; then umount -a -l -t cifs fi }} {{Nota|Certifique-se de que este script esteja localizado no subdiretório {{ic|pre-down.d}}, conforme mostrado acima, caso contrário, ele desmontará todos os compartilhamentos em qualquer alteração de estado de conexão.}} O script a seguir tentará desmontar todos os compartilhamentos SMB após uma desconexão inesperada de uma rede específica: {{hc|/etc/NetworkManager/dispatcher.d/40-umount-smb.sh| #!/bin/sh if [ "$CONNECTION_UUID" = "uuid" ]; then if [ "$2" = "down" ]; then umount -a -l -t cifs fi fi }} {{Nota| * Desde o NetworkManager 0.9.8, os eventos ''pre-down'' e ''down'' não são executados no desligamento ou reinicialização, veja [https://bugzilla.gnome.org/show_bug.cgi?id=701242 este relatório de erro] para mais informações. * Os scripts de ''umount'' anteriores ainda são propensos a deixar os aplicativos que realmente acessam a montagem para "travar". }} Uma alternativa é usar o script como visto em [[NFS#Using a NetworkManager dispatcher]]: {{hc|/etc/NetworkManager/dispatcher.d/30-smb.sh| #!/bin/bash # Descubra O UUID da conexão com "nmcli con show" no terminal. # Todos os tipos de conexão do NetworkManager têm suporte: wireless, VPN, wired... WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9" if [[ "$CONNECTION_UUID" == "$WANTED_CON_UUID" ]]; then # Parâmetro do script $1: Nome da conexão do NetworkManager, não usado # Parâmetro do script $2: eventos despachado case "$2" in "up") mount -a -t cifs ;; "pre-down");& "vpn-pre-down") umount -l -a -t cifs >/dev/null ;; esac fi }} {{Nota|Este script ignora as montagens com a opção {{ic|noauto}}, remove esta opção de montagem ou usa {{ic|auto}} para permitir que o despachante gerencie essas montagens.}} Crie um link simbólico dentro de {{ic|/etc/NetworkManager/dispatcher.d/pre-down}} para pegar os eventos {{ic|pre-down}}: # ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh ==== Montagem de compartilhamentos NFS ==== Veja [[NFS#Using a NetworkManager dispatcher]]. ==== Usar dispatcher para ativar rede sem fio automaticamente dependendo de cabo LAN estar conectado ==== A ideia é ligar o Wi-Fi apenas quando o cabo LAN estiver desconectado (por exemplo, ao desconectá-lo de um laptop) e para que o Wi-Fi seja desativado automaticamente, assim que o cabo LAN for conectado novamente. Crie o seguinte script de dispatcher[https://superuser.com/questions/233448/disable-wlan-if-wired-cable-network-is-available], substituindo {{ic|1=LAN_interface}} pelo seu. {{hc|/etc/NetworkManager/dispatcher.d/wlan_auto_toggle.sh| #!/bin/sh if [ "$1" = "LAN_interface" ]; then case "$2" in up) nmcli radio wifi off ;; down) nmcli radio wifi on ;; esac fi }} {{Nota|Você obter uma lista de interfaces usando [[#Exemplos de nmcli|nmcli]]. As interfaces ethernet (LAN) iniciam com {{ic|en}}, p.ex., {{ic|1=enp0s5}}}} ==== Usar dispatcher para conectar a uma VPN após uma conexão de rede ser estabelecida ==== Neste exemplo, queremos nos conectar automaticamente a uma conexão VPN definida anteriormente após a conexão a uma rede Wi-Fi específica. A primeira coisa a fazer é criar o script de dispatcher que define o que fazer depois de estarmos conectados à rede. {{Nota|Esse script vai precisar de {{Pkg|wireless_tools}} para usar {{ic|iwgetid}}.}} {{hc|/etc/NetworkManager/dispatcher.d/vpn-up| #!/bin/sh VPN_NAME="nome da conexão VPN definido no NetworkManager" ESSID="ESSID da rede Wi-Fi (não o nome da conexão)" interface=$1 status=$2 case $status in up|vpn-down) if iwgetid | grep -qs ":\"$ESSID\""; then nmcli connection up id "$VPN_NAME" fi ;; down) if iwgetid | grep -qs ":\"$ESSID\""; then if nmcli connection show --active | grep "$VPN_NAME"; then nmcli connection down id "$VPN_NAME" fi fi ;; esac }} Se você quiser se conectar automaticamente à VPN para todas as redes Wi-Fi, use a seguinte definição do ESSID: {{ic|1=ESSID=$(iwgetid -r)}}. Lembre-se de definir as permissões do script [[#Serviços de rede com o NetworkManager dispatcher|de acordo com isso]]. A tentativa de se conectar com o script acima ainda pode falhar com {{ic|NetworkManager-dispatcher.service}} reclamando sobre "nenhum segredo de VPN válido", por causa de [https://developer.gnome.org/NetworkManager/0.9/secrets-flags.html como os segredos VPN são armazenados]. Felizmente, existem diferentes opções para fornecer ao script acima acesso à sua senha de VPN. 1: Um deles requer a edição do arquivo de configuração de conexão VPN para fazer com que o NetworkManager armazene os segredos por si só, em vez de dentro de um chaveiro [https://bugzilla.redhat.com/show_bug.cgi?id=710552 que será inacessível por root]: abra {{ic|/etc/NetworkManager/system-connections/''nome de sua conexão VPN''}} e altere as {{ic|password-flags}} e {{ic|secret-flags}} de {{ic|1}} para {{ic|0}}. Se isso não funcionar sozinho, talvez seja necessário criar um {{ic|passwd-file}} em um local seguro com as mesmas permissões e propriedade que o script do dispatcher, contendo o seguinte: {{hc|/caminho/para/arquivo-passwd| vpn.secrets.password:SUA_SENHA }} O script deve ser alterado de acordo, para que obtenha a senha do arquivo: {{hc|/etc/NetworkManager/dispatcher.d/vpn-up| #!/bin/sh VPN_NAME="nome de conexão VPN definida no NetworkManager" ESSID="ESSID de rede Wi-Fi (nenhum nome de conexão)" interface=$1 status=$2 case $status in up|vpn-down) if iwgetid | grep -qs ":\"$ESSID\""; then nmcli connection up id "$VPN_NAME" passwd-file /path/to/passwd-file fi ;; down) if iwgetid | grep -qs ":\"$ESSID\""; then if nmcli connection show --active | grep "$VPN_NAME"; then nmcli connection down id "$VPN_NAME" fi fi ;; esac }} 2: Alternativamente, altere a {{ic|password-flags}} e coloque a senha diretamente no arquivo de configuração adicionando a seção {{ic|vpn-secrets}}: [vpn] .... password-flags=0 [vpn-secrets] password=''senha_senha'' {{Nota|Agora pode ser necessário reabrir o editor de conexão do NetworkManager e salvar as senhas/segredos da VPN novamente.}} ==== Usar dispatcher para desabilitar IPv6 em conexões de provedor de VPN ==== Muitos [[:Category:VPN providers|provedores de VPN comercial]] possuem suporte apenas a IPv4. Isso significa que todo o tráfego IPv6 ignora a VPN e acaba por se tornar virtualmente desnecessário. Para evitar isso, o dispatcher pode ser usado para desabilitar todo o tráfego IPv5 para o período em que a conexão VPN está ativa. {{hc|/etc/NetworkManager/dispatcher.d/10-vpn-ipv6| #!/bin/sh case "$2" in vpn-up) echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 ;; vpn-down) echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6 ;; esac }} ==== OpenNTPD ==== Veja [[OpenNTPD#Using NetworkManager dispatcher]]. == Testando == Os miniaplicativos do NetworkManager são projetados para serem carregados no início da sessão, portanto, nenhuma configuração adicional deve ser necessária para a maioria dos usuários. Se você já desativou suas configurações de rede anteriores e desconectou-se da sua rede, agora pode testar se o NetworkManager funcionará. O primeiro passo é [[inicia]]r {{ic|NetworkManager.service}}. Alguns miniaplicativos fornecerão um arquivo {{ic|.desktop}} para que o miniaplicativo NetworkManager possa ser carregado através do menu do aplicativo. Se isso não acontecer, você terá que descobrir o comando para usar ou efetuar logout e efetuar login novamente para iniciar o miniaplicativo. Depois que o applet é iniciado, ele provavelmente começará a pesquisar conexões de rede com a autoconfiguração com um servidor DHCP. Para iniciar o miniaplicativo do GNOME nos gerenciadores de janela não compatíveis com xdg, como [[awesome]]: nm-applet --sm-disable & Para endereços IP estáticos, você terá que configurar o NetworkManager para entendê-los. O processo geralmente envolve clicar com o botão direito do mouse no applet e selecionar algo como 'Editar conexões'. == Dicas e truques == === Senhas de Wi-Fi criptografadas === Por padrão, o NetworkManager armazena senhas em texto não criptografado nos arquivos de conexão em {{ic|/etc/NetworkManager/system-connections/}}. Para imprimir as senhas armazenadas, use o seguinte comando: # grep -r '^psk=' /etc/NetworkManager/system-connections/ As senhas são acessíveis ao usuário root no sistema de arquivos e aos usuários com acesso às configurações através da GUI (por exemplo, {{ic|nm-applet}}). É preferível salvar as senhas em formato criptografado em um chaveiro, em vez de texto não criptografado. A desvantagem de usar um chaveiro é que as conexões precisam ser configuradas para cada usuário. ==== Usando GNOME Keyring ==== O daemon do conjunto de chaves deve ser iniciado e o chaveiro precisa ser desbloqueado para que o seguinte funcione. Além disso, o NetworkManager precisa ser configurado para não armazenar a senha para todos os usuários. Usando o GNOME {{ic|nm-applet}}, execute {{ic|nm-connection-editor}} em um terminal, selecione uma conexão de rede, clique em {{ic|Editar}}, selecione {{ic|Segurança Wi-Fi}} e clique no ícone à direita da senha e marque {{ic|Armazenar a senha somente para este usuário}}. ==== Usando KDE Wallet ==== Usando o {{Pkg|plasma-nm}} do KDE, clique no applet, clique no ícone {{ic|Configurações}} na parte superior direita, clique em uma conexão de rede, na guia {{ic|Configurações gerais}}, desmarque {{ic|Todos os usuários podem se conectar nesta rede}}. Se a opção estiver marcada, as senhas ainda serão armazenadas em texto não criptografado, mesmo que um daemon de chaveiro esteja em execução. Se a opção foi selecionada anteriormente e você desmarcá-la, você pode ter que usar a opção {{ic|reset}} primeiro para fazer a senha desaparecer do arquivo. Como alternativa, exclua a conexão primeiro e configure-a novamente. === Compartilhando conexão internet pelo Wi-Fi === Você pode compartilhar sua conexão com a Internet (por exemplo, 3G ou com fio) com apenas alguns cliques. Por favor, note que um [[firewall]] pode interferir no compartilhamento de internet. Você precisará de uma placa Wi-Fi que tenha suporte ao modo AP. Veja [[Software access point#Wi-Fi device must support AP mode]] para detalhes. [[Instale]] o pacote {{Pkg|dnsmasq}} para poder realmente compartilhar a conexão. Crie a conexão compartilhada: * Clique no miniaplicativo e escolha ''Criar nova rede sem fio''. * Siga o assistente (escolha WPA2 ou superior, certifique-se de usar pelo menos 8 caracteres, pois tamanhos menores falharão). ** Escolha [[Fedora:Features/RealHotspot|Hotspot]] ou Ad-hoc como modo Wi-Fi. A conexão será salva e permanecerá armazenada para a próxima vez que você precisar dela. {{Nota|O Android não possui suporte a conexão a redes ad-hoc. Para compartilhar uma conexão com o Android, use o modo infraestrutura (por exemplo, defina o modo Wi-Fi como "Hotspot").}} === Compartilhando conexão internet por Ethernet === Cenário: o seu dispositivo está conectado à Internet através de wi-fi e pretende compartilhar a conexão à Internet a outros dispositivos através da rede ethernet. Requisitos: * [[Instale]] o pacote {{Pkg|dnsmasq}} para ser capaz de compartilhar a conexão. * Seu dispositivo conectado à internet e outros dispositivos estarem conectados por um cabo ethernet adequado (isso geralmente significa um cabo ''cross'' ou um switch entre eles). * Compartilhamento de Internet não estar bloqueado por um [[firewall]]. Etapas: * Executar {{ic|nm-connection-editor}} do terminal. * Adicionar uma nova conexão ethernet. * Dê um nome sensato. Por exemplo, "Internet compartilhada" * Acesse "Configurações IPv4". * Para "Método:" selecione "Compartilhado com outros computadores". * Salve Agora, você deve ter uma nova opção "Internet compartilhada" sob as conexões cabeadas no NetworkManager. === Verificando se a conectividade está ativa dentro de um script ou trabalho cron === Alguns trabalhos de ''cron'' exigem conectividade para serem bem-sucedidos. Você pode evitar a execução desses trabalhos quando a rede estiver inoperante. Para isso, adicione um teste '''if''' para redes que consulte a ''nm-tool'' do NetworkManager e verifique o estado da rede. O teste mostrado aqui é bem-sucedido se qualquer interface estiver ativa e falhará se todos estiverem inativos. Isso é conveniente para laptops que podem ser conectados, podem estar sem fio ou podem estar fora da rede. {{bc| if [ $(nm-tool|grep State|cut -f2 -d' ') == "connected" ]; then #Qualquer coisa que você deseje fazer se a rede estiver online else #Qualquer coisa que você deseje fazer se a rede estiver offline - note, isso e qualquer outra coisa acima é opcional fi }} Isso é útil para um script {{ic|cron.hourly}} que executa o ''fpupdate'' para a atualização da assinatura do scanner de vírus F-Prot, como exemplo. Outra maneira que pode ser útil, com uma pequena modificação, é diferenciar entre redes usando várias partes da saída do ''nm-tool''; por exemplo, como a rede sem fio ativa é denotada com um asterisco, você pode usar o nome da rede e, em seguida, o grep para um asterisco literal. === Conectar a uma rede com segredo na inicialização === Por padrão, o NetworkManager não se conectará a redes que exigem um segredo automaticamente na inicialização. Isso ocorre porque ele bloqueia essas conexões para o usuário que faz isso por padrão, conectando-se somente depois de terem efetuado login. Para alterar isso, faça o seguinte: # Clique com o botão direito do mouse no ícone do {{ic|nm-applet}} em seu painel e selecione Editar conexões e abra a guia Sem fio # Selecione a conexão com a qual você deseja trabalhar e clique no botão Editar # Marque as caixas "Conectar automaticamente" e "Disponível para todos os usuários" # Adicionalmente, certifique-se que em "Segurança Wi-Fi", "Armazenar senha para todos os usuários (não criptografado)" esteja selecionado Encerre e inicie novamente a sessão para completar. === OpenConnect com senha no KWallet === Enquanto você pode digitar os dois valores no momento da conexão, o {{Pkg|plasma-nm}} 0.9.3.2-1 e acima são capazes de obter o nome de usuário e a senha do OpenConnect diretamente do [[KWallet]]. Abra o "Gerenciador de carteiras do KDE" e procure a sua conexão OpenConnect VPN em "Gerenciamento de rede | Mapas". Clique em "Mostrar valores" e insira suas credenciais na chave "VpnSecrets" neste formulário (substitua "nome_de_usuário" e "senha"): form:main:username%SEP%''nome_de_usuário''%SEP%form:main:password%SEP%''senha'' Da próxima vez que você se conectar, o nome de usuário e a senha deverão aparecer na caixa de diálogo "Segredos de VPN". === Ignorar dispositivos específicos === Às vezes, pode ser desejado que o NetworkManager ignore dispositivos específicos e não tente configurar endereços e rotas para eles. Você pode rapidamente e facilmente ignorar dispositivos por MAC ou por nome de interface usando o seguinte em {{ic|/etc/NetworkManager/conf.d/unmanaged.conf}}: [keyfile] unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0 Após editar o arquivo, execute {{ic|nmcli general reload}} como root. Em seguida, você deve ser capaz de configurar interfaces sem o NetworkManager alterar o que você definiu. === Configurando aleatorização de endereço MAC === {{Nota|1=Desabilitar a aleatorização de endereço MAC pode ser necessário para obter uma conexão de link (estável) [https://bbs.archlinux.org/viewtopic.php?id=220101] e/ou redes que restrinjam dispositivos com base em seu endereço MAC ou tenham uma rede de limite capacidade.}} A aleatorização de MAC pode ser usada para aumentar a privacidade, não revelando seu endereço MAC real à rede. O NetworkManager oferece suporte a dois tipos de aleatorização de endereços MAC: aleatorização durante a digitalização e para conexões de rede. Ambos os modos podem ser configurados modificando o {{ic|/etc/NetworkManager/NetworkManager.conf}} ou criando um arquivo de configuração separado no {{ic|/etc/NetworkManager/conf.d/}}, que é recomendado já que o primeiro arquivo de configuração acima pode ser substituído pelo NetworkManager. A aleatorização durante a varredura de Wi-Fi é ativada por padrão, mas pode ser desativada adicionando as seguintes linhas ao {{ic|/etc/NetworkManager/NetworkManager.conf}} ou a um arquivo de configuração dedicado em {{ic|/etc/NetworkManager/conf.d}}: {{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2= [device] wifi.scan-rand-mac-address=no }} A aleatorização de MAC para conexões de rede pode ser definida para modos diferentes para interfaces sem fio e Ethernet. Veja a [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ publicação de blog do GNOME] para mais detalhes sobre os diferentes modos. Em termos de aleatorização de MAC, os modos mais importantes são {{ic|stable}} e {{ic|random}}. {{ic|stable}} gera um endereço MAC aleatório quando você se conecta a uma nova rede e associa os dois permanentemente. Isso significa que você usará o mesmo endereço MAC sempre que se conectar a essa rede. Em contraste, {{ic|random}} irá gerar um novo endereço MAC toda vez que você se conectar a uma rede, nova ou previamente conhecida. Você pode configurar a aleatorização do MAC adicionando a configuração desejada em {{ic|/etc/NetworkManager/conf.d}}: {{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2= [device-mac-randomization] # "yes" já é o padrão para fazer varredura wifi.scan-rand-mac-address=yes [connection-mac-randomization] # Aleatoriza o MAC para cada conexão ethernet ethernet.cloned-mac-address=random # Gera um MAC aleatório para cada WiFi e associa a dois permanentemente. wifi.cloned-mac-address=stable }} Veja a seguinte [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ publicação de blog do GNOME] para mais detalhes. === Habilitar extensões de privacidade IPv6 === Veja [[IPv6 (Português)#NetworkManager]]. === Trabalhando com conexões cabeadas === Por padrão, o NetworkManager gera um perfil de conexão para cada conexão Ethernet com fio que encontrar. No momento em que gera a conexão, ele não sabe se haverá mais adaptadores Ethernet disponíveis. Por isso, ele chama a primeira conexão com fio "Conexão cabeada 1". Você pode evitar gerar essa conexão, configurando {{ic|no-auto-default}} (consulte {{man|5|NetworkManager.conf}}) ou simplesmente excluindo-a. Em seguida, o NetworkManager se lembrará de não gerar uma conexão para essa interface novamente. Você também pode editar a conexão (e persistir no disco) ou excluí-la. O NetworkManager não irá gerar novamente uma nova conexão. Então, você pode mudar o nome para o que você quiser. Você pode usar algo como o ''nm-connection-editor'' para esta tarefa. === Usando iwd como o backend de Wi-Fi === Instale {{AUR|networkmanager-iwd}} ou habilite o backend experimental [[iwd (Português)|iwd]] criando o seguinte arquivo de configuração: {{hc|/etc/NetworkManager/conf.d/wifi_backend.conf|2= [device] wifi.backend=iwd }} === Executando em um espaço de nomes de rede === Se você deseja executar o NetworkManager dentro de um espaço de nomes de rede (por exemplo, para gerenciar um dispositivo específico que deve ser usado por aplicativos selecionados), abaixe o dispositivo antes de movê-lo para o espaço de nomes: $ ip link set dev ''MEU_DISPOSITIVO'' down $ ip link set dev ''MEU_DISPOSITIVO'' netns ''MEU_ESPAÇO_DE_NOMES'' $ ip netns exec ''MEU_ESPAÇO_DE_NOMES'' NetworkManager ... $ ip netns exec ''MEU_ESPAÇO_DE_NOMES'' killall NetworkManager caso contrário, o NetworkManager falhará posteriormente ao estabelecer a conexão com um erro {{ic|device is strictly unmanaged}}. == Solução de problemas == === Nenhum prompt para senha de redes Wi-Fi seguras === Ao tentar se conectar a uma rede Wi-Fi protegida, nenhum prompt de senha é exibido e nenhuma conexão é estabelecida. Isso acontece quando nenhum pacote de chaveiro é instalado. Uma solução fácil é instalar o {{Pkg|gnome-keyring}}. Se você quiser que as senhas sejam armazenadas em formato criptografado, siga [[GNOME Keyring]] para configurar o ''gnome-keyring-daemon''. === Gerenciamento de rede desabilitado === Quando o NetworkManager for desligado, mas o arquivo pid (estado) não for removido, você verá uma mensagem {{ic|Network management disabled}}. Se isso acontecer, remova o arquivo manualmente: # rm /var/lib/NetworkManager/NetworkManager.state === Problemas com cliente DHCP interno === Se você tiver problemas para obter um endereço IP usando o cliente DHCP interno, considere usar outro cliente DHCP, consulte [[#Cliente DHCP]] para obter instruções. Essa solução alternativa pode resolver problemas em grandes redes sem fio, como o eduroam. === Problemas DHCP com dhclient === Se você tiver problemas ao obter um endereço IP via DHCP, tente adicionar o seguinte ao seu {{ic|/etc/dhclient.conf}}: interface "eth0" { send dhcp-client-identifier 01:''aa:bb:cc:dd:ee:ff''; } sendo {{ic|''aa:bb:cc:dd:ee:ff''}} o endereço MAC desta NIC. O endereço MAC pode ser localizado usando o comando {{ic|ip link show ''interface''}} com o pacote {{Pkg|iproute2}}. === Modem 3G não detectado === Veja [[USB 3G Modem#NetworkManager]]. === Desligando WLAN em laptops === Às vezes o NetworkManager não funciona quando você desabilita o seu adaptador Wi-Fi com um botão em seu laptop e tenta habilitá-lo novamente depois. Isso geralmente é um problema com ''rfkill''. Para verificar se o driver notifica ''rfkill'' sobre o status do adaptador sem fio, use: $ watch -n1 rfkill list all Se um identificador permanecer bloqueado depois de ligar o adaptador, você pode tentar desbloqueá-lo manualmente (onde X é o número do identificador fornecido pela saída acima): # rfkill event unblock X === Reversão de configurações de endereço IP estático para DHCP === Devido a um erro não resolvido, ao alterar as conexões padrão para um endereço IP estático, o {{ic|nm-applet}} pode não armazenar adequadamente a alteração de configuração e voltará ao DHCP automático. Para contornar este problema você tem que editar a conexão padrão (por exemplo, "Auto eth0") em {{ic|nm-applet}}, alterar o nome da conexão (por exemplo "meu eth0"), desmarque a caixa de seleção "Disponível para todos os usuários", altere suas configurações de endereço IP estático conforme desejado e clique em '''Aplicar'''. Isso salvará uma nova conexão com o nome fornecido. Em seguida, você desejará fazer com que a conexão padrão não seja conectada automaticamente. Para fazer isso, execute {{ic|nm-connection-editor}} ('''não''' como root). No editor de conexão, edite a conexão padrão (por exemplo, "Auto eth0") e desmarque "Conectar automaticamente". Clique em '''Aplicar''' e feche o editor de conexão. === Não é possível editar conexões como usuário normal === Veja [[#Configurar as permissões de PolicyKit]]. === Esquecer rede sem fio oculta === Como as redes ocultas não são exibidas na lista de seleção da tela de redes sem fio, elas não podem ser esquecidas (removidas) com a GUI. Você pode excluir um com o seguinte comando: # rm /etc/NetworkManager/system-connections/''SSID'' Isso funciona para qualquer outra conexão. === VPN não funciona no GNOME === Ao configurar conexões OpenConnect ou vpnc no NetworkManager enquanto estiver usando o GNOME, você algumas vezes nunca verá a caixa de diálogo aparecer e o seguinte erro aparecerá em {{ic|/var/log/errors.log}}: localhost NetworkManager[399]: [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request. Isso é causado pelo fato do miniaplicativo de NM do GNOME esperar que os scripts de diálogo estejam em {{ic|/usr/lib/gnome-shell}}, quando os pacotes do NetworkManager os colocam em {{ic|/usr/lib/networkmanager}}. Como uma correção "temporária" (este bug já existe há algum tempo), faça os seguintes links simbólicos: * Para OpenConnect: {{ic|ln -s /usr/lib/networkmanager/nm-openconnect-auth-dialog /usr/lib/gnome-shell/}} * Para VPNC (isto é, Cisco VPN): {{ic|ln -s /usr/lib/networkmanager/nm-vpnc-auth-dialog /usr/lib/gnome-shell/}} Isso pode precisar ser feito para qualquer outro plug-in de VPN do NM, mas esses são os dois mais comuns. === Impossibilidade de se conectar a redes sem fio europeias visíveis === Os chips WLAN são fornecidos com um padrão [[Configuração de rede sem fio#Respeitar o domínio regulatório|domínio regulatório]]. Se o seu ponto de acesso não operar dentro dessas limitações, você não conseguirá se conectar à rede. Consertar isso é fácil: # [[Instale]] {{Pkg|wireless-regdb}} # Descomente o código de país correto em {{ic|/etc/conf.d/wireless-regdom}} # Reinicie o sistema, pois a configuração está como somente leitura na inicialização === Conexão automática a VPN na inicialização não funciona === O problema ocorre quando o sistema (ou seja, o NetworkManager em execução como usuário root) tenta estabelecer uma conexão VPN, mas a senha não está acessível porque está armazenada no GNOME Keyring de um usuário específico. Uma solução é manter a senha em sua VPN em texto simples, conforme descrito na etapa (2.) de [[#Usar dispatcher para conectar a uma VPN após uma conexão de rede ser estabelecida]]. Você não precisa mais usar o dispatcher descrito na etapa (1.) para se conectar automaticamente, se você usar a nova opção "autoconectar VPN" na interface gráfica do {{ic|nm-applet}}. === Gargalo no systemd === Com o tempo, os arquivos de log ({{ic|/var/log/journal}}) podem se tornar muito grandes. Isso pode ter um grande impacto no desempenho da inicialização ao usar o NetworkManager, consulte: [[Systemd (Português)#Tempo de inicialização aumentando com o tempo]]. === Desconexões de rede regulares, latência, pacotes perdidos (WiFi) === O NetworkManager faz uma varredura a cada 2 minutos. Alguns drivers de WiFi apresentam problemas ao procurar estações base enquanto conectados/associados. Os sintomas incluem desconexões/reconexões de VPN e perda de pacotes, páginas da Web que não podem ser carregadas e, em seguida, atualizadas corretamente. A execução {{ic|journalctl -f}} indicará que isso está ocorrendo, mensagens como as seguintes estarão contidas nos logs em intervalos regulares. NetworkManager[410]: (wlp3s0): roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none)) Se o roaming não for importante, o comportamento de varredura periódica poderá ser desabilitado bloqueando o BSSID do ponto de acesso no perfil de conexão WiFi. === Impossibilidade de ligar o Wi-Fi com laptop Lenovo (IdeaPad, Legion, etc.) === Há um problema com o módulo {{ic|ideapad_laptop}} em alguns modelos da Lenovo, devido ao driver wi-fi relatar incorretamente um bloco virtual. A placa ainda pode ser manipulada com {{ic|netctl}}, mas os gerenciadores como o NetworkManager quebram. Você pode verificar se este é o problema, verificando a saída de {{ic|rfkill list}} depois de alternar sua chave de hardware e ver que o bloco de software persiste. [[Modprobe (Português)|Descarregar]] o módulo {{ic|ideapad_laptop}} deve corrigir isso. ('''atenção''': isso também pode desabilitar o teclado e o touchpad do laptop!). === Desligar envido de hostname === O NetworkManager, por padrão, envia o nome do host para o servidor DHCP. O envio de nome de host só pode ser desativado por conexão não globalmente ([https://bugzilla.gnome.org/show_bug.cgi?id=768076 Bug 768076 do GNOME]). Para desabilitar o envio do seu nome de host para o servidor DHCP para uma conexão específica, adicione o seguinte ao seu arquivo de conexão de rede: {{hc|/etc/NetworkManager/system-connections/''seu_arquivo_de_conexão''|2= ... [ipv4] dhcp-send-hostname=false ... [ipv6] dhcp-send-hostname=false ... }} === nm-applet desaparece no i3wm === Se você usar o {{ic|xfce4-notifyd.service}} para notificações, deverá [[editar]] a unidade e adicionar o seguinte: {{hc|/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf|2= [Service] Environment="DISPLAY=:0.0" }} Depois de recarregar os daemons, [[reinicie]] o {{ic|xfce4-notifyd.service}}. Saia do i3 e reinicie-o novamente, e o miniaplicativo deverá aparecer na área de notificação. === Ícones de bandeja do nm-applet exibidos incorretamente === Atualmente, os ícones da área de notificação do nm-applet são desenhados uns em cima dos outros, ou seja, o ícone exibindo a força sem fio pode ser exibido na parte superior do ícone, indicando que não há conexão com fio. Isso aparentemente é um problema/bug do GTK3: https://gitlab.gnome.org/GNOME/gtk/issues/1280 . Uma versão corrigida do GTK3 existe no AUR, que aparentemente corrige o erro do ícone da área de notificação: {{AUR|gtk3-classic}} . === Unit dbus-org.freedesktop.resolve1.service não encontrado === Se {{ic|systemd-resolved.service}} não tiver sido iniciado, NetworkManager vai tentar iniciá-lo usando D-Bus e vai falhar: dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ") dbus-daemon[991]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Unit dbus-org.freedesktop.resolve1.service not found. dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ") Isso é porque o NetworkManager vai tentar enviar informações DNS para [[systemd-resolved]] independentemente da configuração {{ic|1=main.dns=}} no {{man|5|NetworkManager.conf}}.[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/d4eb4cb45f41b1751cacf71da558bf8f0988f383] Isso pode ser desabilitado com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}: {{hc|/etc/NetworkManager/conf.d/no-systemd-resolved.conf|2= [main] systemd-resolved=false }} Veja {{Bug|62138}}. === Segredos eram necessários, mas não fornecidos === Se você tenta se conectar a uma rede usando o dispositivo {{ic|nmcli device wifi connect ''SSID'' password ''senha''}} e recebe o seguinte erro: Erro: Ativação da conexão falhou: (7) Segredos foram requisitados, mas não fornecidos O erro pode ser resolvido excluindo o perfil de conexão e criando um novo: $ nmcli connection delete ''SSID'' $ nmcli device wifi connect ''SSID'' password ''senha'' === Conexão WPA Empresarial com o NetworkManager === Se você tentar se conectar a uma rede WPA Empresarial como 'eduroam' com o NetworkManager com o backend [[iwd (Português)|iwd]], o NetworkManager receberá o seguinte erro: Connection 'eduroam' is not avialable on device wlan0 because profile is not compatible with device (802.1x connections must have IWD provisioning files) Isso ocorre porque o NetworkManager não consegue configurar uma rede WPA Enterprise. Portanto, você deve configurá-lo usando um arquivo de configuração do iwd {{ic|/var/lib/iwd/''essid''.8021x}} como descrito em [[iwd (Português)#WPA Empresarial]]. == Veja também == * [https://blogs.gnome.org/dcbw/2015/02/16/networkmanager-for-administrators-part-1/ NetworkManager para Administradores Parte 1] * [[Wikipedia:pt:NetworkManager]]